using System;

namespace SanFS.MediaChangerLibrary
{
	public enum ElementType
	{
		DataTransfer,
		ImportExport,
		Normal
	}
	
	public enum LoadStatus
	{
	    Empty,
	    Unloading,
	    Loading,
	    Loaded
	}
	
    /// <summary>
    /// Public facing interface which represents a MediaChanger storage element.
    /// </summary>
	public interface IStorageElement
	{
        /// <summary>
        /// Loads the storage element from another
        /// </summary>
        /// <param name="SrcElement"></param>
        void Load(IStorageElement SrcElement);

        /// <summary>
        /// Unloads the storage element into another
        /// </summary>
        /// <param name="DstElement"></param>
        void Unload(IStorageElement DstElement);

        /// <summary>
        /// The device specific address for this element
        /// </summary>
		int			    DeviceSlot {get;}
		
        /// <summary>
        /// Element type
        /// </summary>
		ElementType     Type {get;}
		
		/// <summary>
		/// Status of this element
		/// </summary>
		LoadStatus      Status {get; }

        /// <summary>
        /// The MediaChanger object this element belongs to
        /// </summary>
        IMediaChanger   MediaChanger { get; }
    }  // END INTERFACE
}  // END NAMESPACE
